/**
 * 红包任务调度
 */
import { scheduleJob, RecurrenceRule, Range } from 'node-schedule'
import { WEBSOCKETS, toSuccess, useEntityManager } from '@sker/core'
import { AutoDevice, AutoDeviceWork, AutoRedLog } from '@sker/entities'
import dayjs from 'dayjs'
import { container } from 'tsyringe'
import { In, MoreThan } from 'typeorm'
export default async () => {

    // const rule = new RecurrenceRule();
    // rule.second = new Range(0, 59, 10); // 设置每10秒执行一次
    // let i = 0;
    // scheduleJob('RED_PACKAGE_SEND', rule, async (fireData) => {
    //     i += 1;
    //     console.log(fireData)
    //     await useEntityManager(async m => {
    //         const start = 30;
    //         const end = 60 * 5;
    //         const date = dayjs().format('YYYY-MM-DD')
    //         const list: any[] = await m.createQueryBuilder()
    //             .select('count', 'count')
    //             .addSelect('link', 'link')
    //             .addSelect('online', 'online')
    //             .addSelect('open_date', 'open_date')
    //             .addSelect('id', 'id')
    //             .addSelect('can_join', 'can_join')
    //             .addSelect('origin_url', 'origin_url')
    //             .from(AutoRedLog, 'log')
    //             .where('open_date>:start_date and open_date<:end_date', {
    //                 start_date: dayjs().add(start, 'second').toDate(),
    //                 end_date: dayjs().add(end, 'second').toDate()
    //             })
    //             .andWhere('can_join>:can_join', { can_join: 0 })
    //             .andWhere('count>:count', { count: 100 })
    //             .orderBy('count', 'DESC')
    //             .addOrderBy('open_date', 'ASC')
    //             .execute();
    //         if (list.length > 0) {
    //             // 找到 概率最高的
    //             const item = list[0];
    //             const websockets = container.resolve(WEBSOCKETS)
    //             let ids = [...websockets.keys()];
    //             const deviceList = await m.find(AutoDeviceWork, { where: { date: date, status: `0`, uuid: In(ids), mood: MoreThan(100) }, order: { mood: 'DESC' }, take: 3 })
    //             if (deviceList.length > 0) {
    //                 console.log(`send red packet to ${deviceList.map(it => it.uuid)}`, item)
    //                 const websockets = container.resolve(WEBSOCKETS)
    //                 deviceList.map(it => {
    //                     const socket = websockets.get(it.uuid)
    //                     if (socket) {
    //                         /**
    //                          * 将红包信息发送给 客户端
    //                          */
    //                         socket.send(JSON.stringify({ type: "RED_PACKET_JOIN", payload: item }))
    //                     }
    //                 })
    //             }
    //         }
    //         if (i % 10 === 0) {
    //             await m.query(`update auto_device_work set mood = mood + 1`)
    //         }
    //     })
    // })
    return toSuccess(true)
}
